package org.chaiyi.template.core.common.contract.method;

import reactor.core.publisher.Mono;

import static org.chaiyi.template.core.common.contract.Contractor.Error.MODIFY_METHOD_NOT_IMPLEMENTED;

/**
 * 全量更新
 */
public interface ModifyContractor<D> {


    /**
     * 修改前同步执行
     */
    default D modifyBefore(String tenantId, String buCode, D entity) {
        return entity;
    }

    default Mono<D> modify(String tenantId, String buCode, D entity) {
        MODIFY_METHOD_NOT_IMPLEMENTED.trigger();
        return null;
    }

    /**
     * 修改后异步执行
     */
    default void  modifyAfter(String tenantId, String buCode, D entity) {

    }
}
